//package com.sadam.ui4;
//
//import android.Manifest;
//import android.content.Intent;
//import android.content.SharedPreferences;
//import android.content.pm.PackageManager;
//import android.graphics.Bitmap;
//import android.media.MediaMetadataRetriever;
//import android.media.ThumbnailUtils;
//import android.net.Uri;
//import android.os.Bundle;
//import android.os.Environment;
//import android.provider.MediaStore;
//import android.provider.Settings;
//import android.util.Log;
//import android.view.View;
//import android.widget.Button;
//import android.widget.ImageView;
//import android.widget.Toast;
//import androidx.annotation.NonNull;
//import androidx.appcompat.app.AppCompatActivity;
//import androidx.core.app.ActivityCompat;
//import androidx.core.content.ContextCompat;
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.OutputStream;
//import com.sadam.ui4.FragmentHomePage.FragmentHomePage;
//
//public class ActivityPublish extends AppCompatActivity {
//    private static final int REQUEST_VIDEO_PERMISSION = 100;
//    private static final int REQUEST_PICK_VIDEO = 200;
//    private static final int REQUEST_PERMISSION_SETTINGS = 300;
//    private Uri selectedVideoUri;
//    private ImageView ivAddContent;
//    private Button btnPublish;
//    private static final String TAG = "ActivityPublish";
//
//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_publish);
//
//        ivAddContent = findViewById(R.id.iv_add_content);
//        btnPublish = findViewById(R.id.btn_publish);
//
//        // 选择视频按钮点击事件
//        ivAddContent.setOnClickListener(v -> requestVideoPermission());
//
//        // 发布按钮点击事件
//        btnPublish.setOnClickListener(v -> {
//            if (selectedVideoUri != null) {
//                saveVideoToPath(selectedVideoUri);
//                Toast.makeText(this, "发布成功！返回首页", Toast.LENGTH_SHORT).show();
//
//                // 直接 finish 返回 MainActivity
//                finish();
//            } else {
//                Toast.makeText(this, "请先选择视频", Toast.LENGTH_SHORT).show();
//            }
//        });
//
//        // 返回按钮点击事件
//        findViewById(R.id.iv_back).setOnClickListener(v -> finish());
//    }
//
//    // 权限请求方法
//    private void requestVideoPermission() {
//        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
//                != PackageManager.PERMISSION_GRANTED
//                || ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
//                != PackageManager.PERMISSION_GRANTED) {
//
//            if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)
//                    || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
//                Toast.makeText(this, "需要存储权限才能选择和保存视频，请在设置中开启", Toast.LENGTH_LONG).show();
//                openPermissionSettings();
//            } else {
//                ActivityCompat.requestPermissions(
//                        this,
//                        new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE},
//                        REQUEST_VIDEO_PERMISSION
//                );
//            }
//        } else {
//            pickVideoFromGallery();
//        }
//    }
//
//    private void openPermissionSettings() {
//        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
//        Uri uri = Uri.fromParts("package", getPackageName(), null);
//        intent.setData(uri);
//        startActivityForResult(intent, REQUEST_PERMISSION_SETTINGS);
//    }
//
//    @Override
//    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//        if (requestCode == REQUEST_VIDEO_PERMISSION) {
//            boolean readGranted = grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED;
//            boolean writeGranted = grantResults.length > 1 && grantResults[1] == PackageManager.PERMISSION_GRANTED;
//
//            if (readGranted && writeGranted) {
//                pickVideoFromGallery();
//            } else {
//                Toast.makeText(this, "权限被拒绝，无法选择视频，请手动开启", Toast.LENGTH_LONG).show();
//                openPermissionSettings();
//            }
//        }
//    }
//
//    @Override
//    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
//        if (requestCode == REQUEST_PERMISSION_SETTINGS) {
//            requestVideoPermission();
//        } else if (requestCode == REQUEST_PICK_VIDEO && resultCode == RESULT_OK && data != null) {
//            selectedVideoUri = data.getData();
//            if (selectedVideoUri == null) {
//                Toast.makeText(this, "视频路径获取失败", Toast.LENGTH_SHORT).show();
//                return;
//            }
//
//            Log.d(TAG, "选中的视频Uri: " + selectedVideoUri.toString());
//            Toast.makeText(this, "已选择视频", Toast.LENGTH_SHORT).show();
//
//            // 尝试生成缩略图
//            Bitmap thumbnail = getVideoThumbnail(selectedVideoUri);
//
//            if (thumbnail != null) {
//                // 缩放缩略图以适应ImageView
//                int targetWidth = ivAddContent.getWidth() > 0 ? ivAddContent.getWidth() : 100;
//                int targetHeight = ivAddContent.getHeight() > 0 ? ivAddContent.getHeight() : 100;
//                Bitmap scaledThumbnail = Bitmap.createScaledBitmap(thumbnail, targetWidth, targetHeight, true);
//                ivAddContent.setImageBitmap(scaledThumbnail);
//                thumbnail.recycle();
//            } else {
//                Toast.makeText(this, "缩略图生成失败", Toast.LENGTH_SHORT).show();
//                ivAddContent.setImageResource(R.drawable.plus);
//            }
//        }
//    }
//
//    // 三种方法获取视频缩略图
//    private Bitmap getVideoThumbnail(Uri videoUri) {
//        // 方法1: 使用MediaMetadataRetriever
//        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
//        try {
//            retriever.setDataSource(this, videoUri);
//            Bitmap bitmap = retriever.getFrameAtTime(1000000);
//            if (bitmap != null) {
//                Log.d(TAG, "使用MediaMetadataRetriever获取缩略图成功");
//                return bitmap;
//            }
//        } catch (Exception e) {
//            Log.e(TAG, "MediaMetadataRetriever方法失败: " + e.getMessage());
//        } finally {
//            try {
//                retriever.release();
//            } catch (IOException e) {
//                Log.e(TAG, "释放MediaMetadataRetriever失败: " + e.getMessage());
//            }
//        }
//
//        // 方法2: 使用MediaStore系统缩略图
//        try {
//            String[] projection = {MediaStore.Video.Media._ID};
//            android.database.Cursor cursor = getContentResolver().query(videoUri, projection, null, null, null);
//            if (cursor != null && cursor.moveToFirst()) {
//                int idColumnIndex = cursor.getColumnIndex(MediaStore.Video.Media._ID);
//                long videoId = cursor.getLong(idColumnIndex);
//                cursor.close();
//
//                Bitmap bitmap = MediaStore.Video.Thumbnails.getThumbnail(
//                        getContentResolver(),
//                        videoId,
//                        MediaStore.Video.Thumbnails.MINI_KIND,
//                        null
//                );
//                if (bitmap != null) {
//                    Log.d(TAG, "使用MediaStore获取缩略图成功");
//                    return bitmap;
//                }
//            }
//        } catch (Exception e) {
//            Log.e(TAG, "MediaStore方法失败: " + e.getMessage());
//        }
//
//        // 方法3: 使用文件路径生成缩略图
//        try {
//            String filePath = getRealPathFromUri(videoUri);
//            if (filePath != null) {
//                Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(
//                        filePath,
//                        MediaStore.Video.Thumbnails.MINI_KIND
//                );
//                if (bitmap != null) {
//                    Log.d(TAG, "使用文件路径获取缩略图成功");
//                    return bitmap;
//                }
//            }
//        } catch (Exception e) {
//            Log.e(TAG, "文件路径方法失败: " + e.getMessage());
//        }
//
//        return null;
//    }
//
//    // 将Uri转换为真实文件路径
//    private String getRealPathFromUri(Uri uri) {
//        if (uri == null) return null;
//
//        String path = uri.getPath();
//        if (path != null && new File(path).exists()) {
//            return path;
//        }
//
//        String[] projection = {MediaStore.Video.Media.DATA};
//        try (android.database.Cursor cursor = getContentResolver().query(uri, projection, null, null, null)) {
//            if (cursor != null && cursor.moveToFirst()) {
//                int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
//                return cursor.getString(columnIndex);
//            }
//        } catch (Exception e) {
//            Log.e(TAG, "获取真实路径失败: " + e.getMessage());
//        }
//        return null;
//    }
//
//    // 打开相册选择视频
//    private void pickVideoFromGallery() {
//        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
//        intent.setType("video/*");
//        if (intent.resolveActivity(getPackageManager()) != null) {
//            startActivityForResult(intent, REQUEST_PICK_VIDEO);
//        } else {
//            Toast.makeText(this, "未找到可处理视频选择的应用", Toast.LENGTH_SHORT).show();
//        }
//    }
//
//    // 保存视频到内部存储 - 修改后的路径
//    private void saveVideoToPath(Uri videoUri) {
//        try {
//            // 获取当前登录用户信息
//            String username = getCurrentUsername();
//            if (username == null || username.isEmpty()) {
//                username = "unknown_user"; // 默认用户名
//            }
//
//            // 修改：保存到内部存储的根目录下 video/published/ 子目录
//            // 路径为 /data/data/包名/files/video/published/
//            File targetDir = new File(getFilesDir(), "video/published");
//
//            // 创建目录（包括父目录）
//            if (!targetDir.exists()) {
//                boolean created = targetDir.mkdirs();
//                if (!created) {
//                    Log.e(TAG, "无法创建目录：" + targetDir.getAbsolutePath());
//                    Toast.makeText(this, "创建目录失败", Toast.LENGTH_SHORT).show();
//                    return;
//                }
//            }
//
//            // 生成文件名：用户名_时间戳.mp4
//            String fileName = username + "_" + System.currentTimeMillis() + ".mp4";
//            File targetFile = new File(targetDir, fileName);
//
//            // 复制视频文件
//            InputStream inputStream = null;
//            OutputStream outputStream = null;
//            try {
//                inputStream = getContentResolver().openInputStream(videoUri);
//                if (inputStream == null) {
//                    throw new IOException("无法打开输入流");
//                }
//
//                outputStream = new FileOutputStream(targetFile);
//
//                byte[] buffer = new byte[8192]; // 增大缓冲区提高性能
//                int length;
//                while ((length = inputStream.read(buffer)) > 0) {
//                    outputStream.write(buffer, 0, length);
//                }
//
//                outputStream.flush();
//            } finally {
//                if (outputStream != null) {
//                    try {
//                        outputStream.close();
//                    } catch (IOException e) {
//                        Log.e(TAG, "关闭输出流失败", e);
//                    }
//                }
//                if (inputStream != null) {
//                    try {
//                        inputStream.close();
//                    } catch (IOException e) {
//                        Log.e(TAG, "关闭输入流失败", e);
//                    }
//                }
//            }
//
//            Log.d(TAG, "视频已保存到：" + targetFile.getAbsolutePath());
//            Toast.makeText(this, "视频已保存到内部存储", Toast.LENGTH_SHORT).show();
//
//            // 验证文件是否真的被创建
//            if (targetFile.exists() && targetFile.length() > 0) {
//                Log.d(TAG, "文件验证成功 - 大小：" + targetFile.length() + " 字节");
//            } else {
//                Log.e(TAG, "文件验证失败 - 文件不存在或大小为0");
//                Toast.makeText(this, "视频保存失败：文件创建异常", Toast.LENGTH_SHORT).show();
//            }
//
//        } catch (IOException e) {
//            Log.e(TAG, "保存视频失败", e);
//            Toast.makeText(this, "保存视频失败：" + e.getMessage(), Toast.LENGTH_SHORT).show();
//        } catch (Exception e) {
//            Log.e(TAG, "保存视频发生未知错误", e);
//            Toast.makeText(this, "保存视频失败：" + e.getMessage(), Toast.LENGTH_SHORT).show();
//        }
//    }
//
//    // 辅助方法：获取当前用户名
//    private String getCurrentUsername() {
//        // 这里需要根据你的用户系统实现获取当前用户名的逻辑
//        // 例如，从SharedPreferences、数据库或全局变量中获取
//        // 以下是一个示例：
//        SharedPreferences prefs = getSharedPreferences("user_prefs", MODE_PRIVATE);
//        String username = prefs.getString("username", null);
//
//        // 如果SharedPreferences中没有用户名，可以尝试从其他地方获取
//        if (username == null || username.isEmpty()) {
//            // 这里可以根据你的应用逻辑获取用户名
//            // 例如从全局变量、数据库等
//            username = "default_user";
//        }
//
//        return username;
//    }
//
//    // 添加一个方法来获取内部存储视频目录路径（用于调试）
//    public String getInternalVideoDirPath() {
//        File targetDir = new File(getFilesDir(), "video/published");
//        return targetDir.getAbsolutePath();
//    }
//
//    // 添加一个方法来列出内部存储中的视频文件（用于调试）
//    public void listInternalVideoFiles() {
//        File targetDir = new File(getFilesDir(), "video/published");
//        if (targetDir.exists() && targetDir.isDirectory()) {
//            File[] files = targetDir.listFiles();
//            if (files != null && files.length > 0) {
//                Log.d(TAG, "内部存储视频目录中的文件：");
//                for (File file : files) {
//                    Log.d(TAG, "- " + file.getName() + " (大小: " + file.length() + " bytes)");
//                }
//            } else {
//                Log.d(TAG, "内部存储视频目录为空");
//            }
//        } else {
//            Log.d(TAG, "内部存储视频目录不存在");
//        }
//    }
//}
//
//
//
//
